//
//  ViewController.m
//  02-链式编程思想(计算器)
//
//  Created by J on 16/2/18.
//  Copyright © 2016年 J. All rights reserved.
//

#import "ViewController.h"
#import "CaculatorMaker.h"
#import "NSObject+Caculator.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // add().add()
    //1.创建计算制造者
//   CaculatorMaker* maker = [CaculatorMaker new];
    //链式编程 maker.add(10).add(10).add(10)
//    NSInteger result =   maker.add(10).add(20).result;
//    NSLog(@"%zd",result);

    //提供一个没有参数的add方法,返回值block
//    NSUInteger result = [[[[maker add:10] add:20] add:30]result];
//    NSLog(@"%zd",result);
    //之前开发中比较习惯 吧事情封装到一个方法中
    //链式编程思想:把要做的事情封装到block,给外界提供一个返回这个Block的方法
    //链式编程思想方法特点:方法返回值必须是block;block参数:放需要操作的内容,block返回值:方法调用者

    
    //block:使代码高聚合
  
    
    NSInteger result = [NSObject makeCaculator:^(CaculatorMaker *maker) {
        //把所有的计算代码封装到这里
        [maker.add(10).add(20).multy(3) result];
        
    }];
    
   
    
    NSLog(@"%zd",result);
}



@end
